/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package CapaLogica;

import CapaAccesoBD.Conector;
import java.util.ArrayList;
import java.util.Date;

/**
 *
 * @author Elayner
 */
public class MultiLibro {
    
        /**
    * Inserta un registro de la galeria en la base de datos
    *
    * @param  pnombre  nombre de la galeria
    * @param  pdireccion direccion de la galeria
    * @param  ptelefono telefono de la galeria
    * @param  pfec_ina fecha de inaguracion
    * @param  pnom_encar nombre del encargado
    * @param  pdimension dimensiones
    * @return   el objeto Galeria
    */
	public  Libro crear(int isbn, String titulo, int volumen, String editorial, Date fechaPublicacion, String tipo, String codAutor, String codDescriptor) 
		throws Exception{
            
		Libro objLibro=null;
		String sql;
		sql = "INSERT INTO TLibro "+
		"VALUES ("+isbn+", '"+titulo+"', "+volumen+",'"+editorial+",'"+fechaPublicacion+"','"+tipo+"','"+codAutor+"','"+codDescriptor+"');";
		try {
			Conector.getConector().ejecutarSQL(sql);
			objLibro = new Libro(isbn,titulo,volumen,editorial,fechaPublicacion,tipo,codAutor,codDescriptor);
		}
		catch (Exception e) {
			throw new Exception (e.getMessage());
		}
		return objLibro;
	}
	
            
    /**
    * Borra el registro de una galeria
    *
    * @param  pgaleria  objeto galeria
    */	
	public boolean borrar(Libro objLibro) throws 
			java.sql.SQLException,Exception{
                boolean result=false;        
		String sql;
		sql = "DELETE FROM TLibro "+
		"WHERE isbn="+objLibro.getIsbn()+";";
		try {
			Conector.getConector().ejecutarSQL(sql);
                        result=true;
		}
		catch (Exception e) {
			throw new Exception (e.getMessage());
		}
               return result;
	}
        
        
       public  void actualizar(Libro objLibro) throws 
			java.sql.SQLException,Exception{
		String sql;
		sql = "UPDATE TLibro "+
		"SET titulo='"+objLibro.getTitulo()+"' "+
                ",volumen='"+objLibro.getVolumen()+"' "+
                ",editorial='"+objLibro.getEditorial()+"' "+
                ",fechaPublicacion='"+objLibro.getFechaPublicacion()+"' "+
                ",tipo="+objLibro.getTipo()+    
                ",codAutor="+objLibro.getCodAutor()+  
                ",codDescriptor="+objLibro.getCodDescriptor()+                          
		" WHERE isbn="+objLibro.getIsbn()+";";
		try {
			Conector.getConector().ejecutarSQL(sql);
		}
		catch (Exception e) {
			throw new Exception (e.getMessage());
		}
	}
    /**
    * Busca una galeria por su nombre 
    * 
    * @param  pnomGaleria  nombre de la galeria
    * @return   galeria
    */	
        public ArrayList<Libro> buscarLibros(int isbn,String ptitulo,String pautor,String pdescripcion,String codEjemplar) throws Exception{
            Libro objLibro;
            ArrayList<Libro> listaLibros;
            String sql;
            java.sql.ResultSet rs;
            sql = "SELECT a.* " + 
                  " FROM TLibro a, TAutor b,TDescripcion c,TEjemplar d "+
                  "WHERE titulo like '%"+ptitulo+"%' and b.nombre like '%"+pautor+"%' and c.descripcion like '%"+pdescripcion+"%'"; 
                   if(isbn>0 && codEjemplar.length()>0){ 
                       sql+=" and isbn = "+isbn+" and d.codigo='"+codEjemplar+"'";
                   }else{
                       if(isbn>0){
                       sql+=" and isbn = "+isbn;
                       }else{
                           if(codEjemplar.length()>0){
                       sql+=" and d.codigo='"+codEjemplar+"'";
                           }
                       }
                   }
                   sql+=";";
            try{
                rs = Conector.getConector().ejecutarSQL(sql,true);
                    listaLibros = new ArrayList<>();
                if (rs.next()) {
                    do{
                        objLibro = new Libro (rs.getInt("isbn"), rs.getString("titulo"), rs.getInt("volumen"), 
                        rs.getString("editorial"), rs.getDate("fechaPublicacion"), rs.getString("tipo"),rs.getString("codAutor"),rs.getString("codDescriptor"));

                        listaLibros.add(objLibro);
                    }while (rs.next());
                }
            }catch (Exception e){
                throw new Exception (e.getMessage());
            }
            rs.close();
            
            return listaLibros;
        }
        
            /**
    *Busca las coincidencias de las Descriptores con un
    * Descriptor determinado
    *
    * @param  pnomDescriptor  Descriptor de la una Descriptor
    */  
    public Libro buscarPorIsbn(int pisbn) throws Exception{
        Libro objLibro=null;
        String sql;
        java.sql.ResultSet rs;
        sql = "SELECT *" + 
              "FROM TLibro " + 
              "WHERE isbn = "+pisbn+";";
        try{

            rs = Conector.getConector().ejecutarSQL(sql,true);
            if(rs.next()){
                        objLibro = new Libro (rs.getInt("isbn"), rs.getString("titulo"), rs.getInt("volumen"), 
                        rs.getString("editorial"), rs.getDate("fechaPublicacion"), rs.getString("tipo"),rs.getString("codAutor"),rs.getString("codDescriptor"));
            }
        }catch (Exception e){ 
            throw new Exception (e.getMessage());
        }
        rs.close();

        return objLibro;
    }
    
}
